home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Languages / MPW Oberon 2.1168 / OInterfaces / SFNTTypes.mod < prev    next >
Encoding:
Text File  |  1995-08-10  |  5.0 KB  |  230 lines  |  [TEXT/MPS ]

  1. (*
  2.      File:        SFNTTypes.mod
  3.  
  4.      Contains:    Font file structures.
  5.  
  6.      Version:    Technology:    Quickdraw GX 1.1
  7.                  Package:    Universal Interfaces 2.1ß1 in “MPW Prerelease” on ETO #17
  8.  
  9.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  10.                  All rights reserved.
  11.  
  12.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  13.                  stack.  Include the file and version information (from above)
  14.                  in the problem description and send to:
  15.                      Internet:    apple.bugs.applelink.apple.com
  16.                      AppleLink:    APPLE.BUGS
  17.  
  18. *)
  19.  
  20. (*$TAGS-*)
  21. (*$CALLING PASCAL*)
  22. MODULE SFNTTypes;
  23.  
  24. IMPORT SYSTEM, Types, GXTypes;
  25.  
  26. (* $PUSH*)
  27. (* $ALIGN MAC68K*)
  28. (* $LibExport+*)
  29.  
  30. TYPE
  31.     sfntDirectoryEntry* = RECORD
  32.         tableTag*:                GXTypes.gxFontTableTag;
  33.         checkSum*:                LONGINT;
  34.         offset*:                    LONGINT;
  35.         length*:                    LONGINT;
  36.     END;
  37.  
  38. (* The search fields limits numOffsets to 4096. *)
  39.     sfntDirectory* = RECORD
  40.         format*:                    GXTypes.gxFontFormatTag;
  41.         numOffsets*:                INTEGER;                                (* number of tables *)
  42.         searchRange*:            INTEGER;                                (* (max2 <= numOffsets)*16 *)
  43.         entrySelector*:            INTEGER;                                (* log2(max2 <= numOffsets) *)
  44.         rangeShift*:                INTEGER;                                (* numOffsets*16-searchRange*)
  45.         table*:                    ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF sfntDirectoryEntry;        (* table[numOffsets] *)
  46.     END;
  47.  
  48.  
  49. CONST
  50.     sizeof_sfntDirectory*        = 12;
  51.  
  52. (* Cmap - character id to glyph id gxMapping *)
  53.     cmapFontTableTag*            = LONG("cmap");
  54.  
  55.  
  56. TYPE
  57.     sfntCMapSubHeader* = RECORD
  58.         format*:                    INTEGER;
  59.         length*:                    INTEGER;
  60.         languageID*:                INTEGER;                                (* base-1 *)
  61.     END;
  62.  
  63.  
  64. CONST
  65.     sizeof_sfntCMapSubHeader*    = 6;
  66.  
  67.  
  68. TYPE
  69.     sfntCMapEncoding* = RECORD
  70.         platformID*:                INTEGER;                                (* base-0 *)
  71.         scriptID*:                INTEGER;                                (* base-0 *)
  72.         offset*:                    LONGINT;
  73.     END;
  74.  
  75.  
  76. CONST
  77.     sizeof_sfntCMapEncoding*        = 8;
  78.  
  79.  
  80. TYPE
  81.     sfntCMapHeader* = RECORD
  82.         version*:                INTEGER;
  83.         numTables*:                INTEGER;
  84.         encoding*:                ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF sfntCMapEncoding;
  85.     END;
  86.  
  87.  
  88. CONST
  89.     sizeof_sfntCMapHeader*        = 4;
  90.  
  91. (* Name table *)
  92.     nameFontTableTag*            = LONG("name");
  93.  
  94.  
  95. TYPE
  96.     sfntNameRecord* = RECORD
  97.         platformID*:                INTEGER;                                (* base-0 *)
  98.         scriptID*:                INTEGER;                                (* base-0 *)
  99.         languageID*:                INTEGER;                                (* base-0 *)
  100.         nameID*:                    INTEGER;                                (* base-0 *)
  101.         length*:                    INTEGER;
  102.         offset*:                    INTEGER;
  103.     END;
  104.  
  105.  
  106. CONST
  107.     sizeof_sfntNameRecord*        = 12;
  108.  
  109.  
  110. TYPE
  111.     sfntNameHeader* = RECORD
  112.         format*:                    INTEGER;
  113.         count*:                    INTEGER;
  114.         stringOffset*:            INTEGER;
  115.         rec*:                    ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF sfntNameRecord;
  116.     END;
  117.  
  118.  
  119. CONST
  120.     sizeof_sfntNameHeader*        = 6;
  121.  
  122. (* Fvar table - gxFont variations *)
  123.     variationFontTableTag*        = LONG("fvar");
  124.  
  125. (* These define each gxFont variation *)
  126.  
  127. TYPE
  128.     sfntVariationAxis* = RECORD
  129.         axisTag*:                GXTypes.gxFontVariationTag;
  130.         minValue*:                Types.Fixed;
  131.         defaultValue*:            Types.Fixed;
  132.         maxValue*:                Types.Fixed;
  133.         flags*:                    INTEGER;
  134.         nameID*:                    INTEGER;
  135.     END;
  136.  
  137.  
  138. CONST
  139.     sizeof_sfntVariationAxis*    = 20;
  140.  
  141. (* These are named locations in gxStyle-space for the user *)
  142.  
  143. TYPE
  144.     sfntInstance* = RECORD
  145.         nameID*:                    INTEGER;
  146.         flags*:                    INTEGER;
  147.         coord*:                    ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF Types.Fixed;                    (* [axisCount] *)
  148.         (* room to grow since the header carries a tupleSize field *)
  149.     END;
  150.  
  151.  
  152. CONST
  153.     sizeof_sfntInstance*            = 4;
  154.  
  155.  
  156. TYPE
  157.     sfntVariationHeader* = RECORD
  158.         version*:                Types.Fixed;                                    (* 1.0 Types.Fixed *)
  159.         offsetToData*:            INTEGER;                                (* to first axis* = 16*)
  160.         countSizePairs*:            INTEGER;                                (* axis+inst* = 2 *)
  161.         axisCount*:                INTEGER;
  162.         axisSize*:                INTEGER;
  163.         instanceCount*:            INTEGER;
  164.         instanceSize*:            INTEGER;
  165.         (* …other <count,size> pairs *)
  166.         axis*:                    ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF sfntVariationAxis;        (* [axisCount] *)
  167.         instance*:                ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF sfntInstance;            (* [instanceCount]  …other arrays of data *)
  168.     END;
  169.  
  170.  
  171. CONST
  172.     sizeof_sfntVariationHeader*    = 16;
  173.  
  174. (* Fdsc table - gxFont descriptor *)
  175.     descriptorFontTableTag*        = LONG("fdsc");
  176.  
  177.  
  178. TYPE
  179.     sfntDescriptorHeader* = RECORD
  180.         version*:                Types.Fixed;                                    (* 1.0 in Types.Fixed *)
  181.         descriptorCount*:        LONGINT;
  182.         descriptor*:                ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF GXTypes.gxFontDescriptor;
  183.     END;
  184.  
  185.  
  186. CONST
  187.     sizeof_sfntDescriptorHeader*    = 8;
  188.  
  189. (* Feat Table - layout feature table *)
  190.     featureFontTableTag*            = LONG("feat");
  191.  
  192.  
  193. TYPE
  194.     sfntFeatureName* = RECORD
  195.         featureType*:            INTEGER;
  196.         settingCount*:            INTEGER;
  197.         offsetToSettings*:        LONGINT;
  198.         featureFlags*:            INTEGER;
  199.         nameID*:                    INTEGER;
  200.     END;
  201.  
  202.     sfntFontRunFeature* = RECORD
  203.         featureType*:            INTEGER;
  204.         setting*:                INTEGER;
  205.     END;
  206.  
  207.     sfntFeatureHeader* = RECORD
  208.         version*:                LONGINT;                                (* 1.0 *)
  209.         featureNameCount*:        INTEGER;
  210.         featureSetCount*:        INTEGER;
  211.         reserved*:                LONGINT;                                (* set to 0 *)
  212.         names*:                    ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF sfntFeatureName;
  213.         settings*:                ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF GXTypes.gxFontFeatureSetting;
  214.         runs*:                    ARRAY 1 (*ΔΔ[0..0]ΔΔ*) OF sfntFontRunFeature;
  215.     END;
  216.  
  217. (* OS/2 Table *)
  218.  
  219. CONST
  220.     os2FontTableTag*                = LONG("OS/2");
  221.  
  222. (*  Special invalid glyph AIFF.ID value, useful as a sentinel value, for example *)
  223.     nonGlyphID*                    = 65535;
  224.  
  225.  
  226. (* $ALIGN RESET*)
  227. (* $POP*)
  228.  
  229.  END SFNTTypes.
  230.